﻿using ProyectoDeTesis.Controladores;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Forms;

namespace ProyectoDeTesis.Vistas
{
    public partial class NuevaTarea : Form
    {
        private int pantalla_id = 28;
        private int vuelo_id_seleccionado = 0;
        private PersonalController personalController = new PersonalController();
        private VueloController vueloController = new VueloController();
        private List<ProyectoDeTesis.Vuelo> listaVuelo = new List<ProyectoDeTesis.Vuelo>();
        public NuevaTarea()
        {
            InitializeComponent();
            cargarComboUsuario();
        }

        private void cargarComboUsuario()
        {
            List<ProyectoDeTesis.Usuario> listaUsuario = personalController.cargarControladores();

            ProyectoDeTesis.Usuario usuarioDefault = new ProyectoDeTesis.Usuario();

            usuarioDefault.id = 0;
            usuarioDefault.nombre_usuario = "Seleccione Usuario";

            listaUsuario.Insert(0, usuarioDefault);

            cmbUsuario.DataSource = listaUsuario;
            cmbUsuario.DisplayMember = "nombre_usuario";
            cmbUsuario.ValueMember = "id";
        }

        private void btnagregar_Click(object sender, EventArgs e)
        {
            int usuario_id = Convert.ToInt32(cmbUsuario.SelectedValue);
            if (usuario_id > 0)
            {
                BuscarVuelos buscar = new BuscarVuelos(usuario_id);
                buscar.ShowDialog(this);

                vuelo_id_seleccionado = buscar.VueloId;

                if (vuelo_id_seleccionado > 0)
                {
                    ProyectoDeTesis.Vuelo vuelo = vueloController.obtenerVueloxId(vuelo_id_seleccionado);
                    tbxUsuario.Text = vuelo.num_vuelo;
                    listaVuelo.Add(vuelo);
                    dataGridView1.DataSource = null;
                    dataGridView1.DataSource = listaVuelo;
                    dataGridView1.Columns[0].Visible = false;
                    dataGridView1.Columns[1].HeaderText = "Número de vuelo";
                    dataGridView1.Columns[2].HeaderText = "Tipo de avión";
                    dataGridView1.Columns[3].HeaderText = "Tipo de vuelo";
                    dataGridView1.Columns[4].Visible = false;
                    dataGridView1.Columns[5].HeaderText = "Destino";
                    dataGridView1.Columns[6].Visible = false;
                    dataGridView1.Columns[7].HeaderText = "Fecha de Salida";
                    dataGridView1.Columns[8].HeaderText = "Hora de Salida";
                    dataGridView1.Columns[9].HeaderText = "Fecha de Llegada";
                    dataGridView1.Columns[10].HeaderText = "Hora de Llegada";
                    dataGridView1.Columns[11].HeaderText = "Carga";
                    dataGridView1.Columns[12].HeaderText = "Pasajeros";
                    dataGridView1.Columns[13].HeaderText = "Estado";
                    dataGridView1.Columns[14].Visible = false;
                    dataGridView1.Columns[15].Visible = false;
                    dataGridView1.Columns[16].Visible = false;
                    dataGridView1.Columns[17].Visible = false;
                    dataGridView1.Columns[1].Width = 80;
                    dataGridView1.Columns[2].Width = 80;
                    dataGridView1.Columns[3].Width = 80;
                    dataGridView1.Columns[5].Width = 100;
                    dataGridView1.Columns[7].Width = 80;
                    dataGridView1.Columns[8].Width = 70;
                    dataGridView1.Columns[9].Width = 80;
                    dataGridView1.Columns[10].Width = 70;
                    dataGridView1.Columns[11].Width = 50;
                    dataGridView1.Columns[12].Width = 50;
                    dataGridView1.Columns[13].Width = 80;

                }
            }
            else 
            { 
                FormError form = new FormError("Debe seleccionar un usuario primero.");
                form.ShowDialog(this);
            }
        }

        private void btneliminar_Click(object sender, EventArgs e)
        {
            if (vuelo_id_seleccionado > 0)
            {
                ProyectoDeTesis.Vuelo vuelo = listaVuelo.Where(v => v.id == vuelo_id_seleccionado).First();
                listaVuelo.Remove(vuelo);
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = listaVuelo;
                vuelo_id_seleccionado = 0;
            }
            else
            {
                FormError form = new FormError("Debe seleccionar una fila primera.");
                form.ShowDialog(this);
            }
        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void BtnAceptar_Click(object sender, EventArgs e)
        {
            asignarVuelos();
        }

        private void BtnGuardar_Click(object sender, EventArgs e)
        {
            asignarVuelos();
        }

        private void asignarVuelos()
        {
            int usuario_id = Convert.ToInt32(cmbUsuario.SelectedValue);
            List<int> listaVueloIds = new List<int>();

            foreach (ProyectoDeTesis.Vuelo v in listaVuelo)
            {
                listaVueloIds.Add(v.id);
            }

            if (vueloController.asignarVuelos(usuario_id, listaVueloIds))
            {
                FormAceptar form = new FormAceptar("Se asignaron los vuelos correctamente.");
                form.ShowDialog(this);
                this.Dispose();
            }
        }

        private void BtnCancelarBarra_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
                vuelo_id_seleccionado = Convert.ToInt32(row.Cells[0].Value);
            }
        }
    }
}
